package com.wxzz.elearing.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.user.dto.EnterpriseIdentityDto;
import com.wxzz.elearing.user.dto.EnterpriseOrganizationDto;
import com.wxzz.elearing.user.entity.EnterpriseIdentity;
import com.wxzz.elearing.user.entity.EnterpriseOrganization;
import com.wxzz.elearning.common.vo.ReturnVO;

import java.util.List;

/**
 * 组织架构
 */
public interface IEnterpriseOrganizationService extends IService<EnterpriseOrganization> {

    /**
     * 新增组织架构
     *
     * @param enterpriseOrganization
     * @return
     */
    ReturnVO saveEnterpriseOrganization(EnterpriseOrganization enterpriseOrganization);

    /**
     * 修改组织架构
     *
     * @param enterpriseOrganization
     * @return
     */
    ReturnVO updateEnterpriseOrganization(EnterpriseOrganization enterpriseOrganization);

    /**
     * 根据id删除组织架构
     *
     * @param enterpriseOrganizationId
     * @return
     */
    ReturnVO deleteEnterpriseOrganizationById(Long enterpriseOrganizationId);

    /**
     * 根据pid展示组织架构
     *
     * @param enterpriseOrganizationDto
     * @return
     */
    ReturnVO<List<EnterpriseOrganization>> listEnterpriseOrganizationByPid(Long enterpriseId, EnterpriseOrganizationDto enterpriseOrganizationDto);

    /**
     * 新增组织身份
     *
     * @param enterpriseIdentity
     * @return
     */
    ReturnVO saveEnterpriseIdentity(EnterpriseIdentity enterpriseIdentity);

    /**
     * 修改组织身份
     *
     * @param enterpriseIdentity
     * @return
     */
    ReturnVO updateEnterpriseIdentity(EnterpriseIdentity enterpriseIdentity);

    /**
     * 根据id删除组织身份
     *
     * @param enterpriseIdentityId
     * @return
     */
    ReturnVO deleteEnterpriseIdentityById(Long enterpriseIdentityId);

    /**
     * 根据pid展示组织身份
     *
     * @param enterpriseId
     * @param enterpriseIdentityDto
     * @return
     */
    ReturnVO<List<EnterpriseIdentity>> listEnterpriseIdentityByPid(Long enterpriseId, EnterpriseIdentityDto enterpriseIdentityDto);

    /**
     * 根据id查询组织架构(远程调用)
     *
     * @param organizationId
     * @return
     */
    ReturnVO<String> selectOrganizationById(Long organizationId);
}
